1>>2为什么是0呢,如何得到0.5呢

来源:百度知道 编辑:UC知道 时间:2024/06/14 01:47:47

每右移1位,相当于除2,但是不能为小数。
原因是数字在内存中以2进制存放的,只有0和1。
例如7,内存中为111,右移1位就变成11了,再移就变成1,再移就是0。

1的二进制是 0000……0001

往右移2位, 000000……00(01)括号里的01没有了,所以是0

得到0.5只能1.0/2,而不能用整形移位,整形移位还会是整形。
0.5不是整数,float和double的二进制表示方法跟int是不一样的

这个>>是位运算符,意思是把1的二进制数码整体往右移2位,前面的空位用0补上,所以1>>2是0,0.5是不能这么得到的.
1/2=0.5

>>这个移位符号
X>>Y就是把X右移多少位

要想得到0.5

这样定义
float i = 1, j= 2, k=0;
k = i/j;

浮点数的表示方法与整数不一样的. 1右移了两位, 高位用0补上, 自然最后就是0了嘛.